Scalable Reliable SD Erlang Design

نویسندگان

  • Natalia Chechina
  • Phil Trinder
  • Amir Ghaffari
  • Rickard Green
  • Kenneth Lundin
  • Robert Virding
چکیده

This technical report presents the design of Scalable Distributed (SD) Erlang: a set of language-level changes that aims to enable Distributed Erlang to scale for server applications on commodity hardware with at most 105 cores. We cover a number of aspects, specifically anticipated architecture, anticipated failures, scalable data structures, and scalable computation. Other two components that guided us in the design of SD Erlang are design principles and typical Erlang applications. The design principles summarise the type of modifications we aim to allow Erlang scalability. Erlang exemplars help us to identify the main Erlang scalability issues and hypothetically validate the SD Erlang design. We start by giving an overview of hardware architectures to get an idea of the type of typical hardware architectures we may expect in the next 4-5 years. We expect it to be a NUMA architecture where cores are grouped in modules of 32-64 cores, and each host has 4-6 such modules. A server will consist of ≈ 100 hosts, and a cloud will consist of 2-5 servers (Chapter 3). Then we analyse failures that may happen during SD Erlang program execution. The anticipated failures have an impact on the design decisions we take for SD Erlang (Chapter 4). To scale a language must provide scalable in-memory data structures, scalable persistent data structures, and a scalable computation model. We analyse ETS tables as the main Erlang in-memory data structures. The results show that ETS tables may have scalability problems, however, it is too soon to draw any conclusions as there were no yet real experiments with SD Erlang. As ETS tables are a part of Erlang Virtual Machine (VM) they are out of scope of the current research, and will be dealt by other partners of the RELEASE project (Section 6.1). For the persistent data structures we analyse Mnesia, CoachDB, Casandra, and Riak. The analysis of the database properties shows that such DataBase Management Systems (DBMSs) as Riak and Casandra will be able to provide essential scalability (Section 6.2). SD Erlang’s scalable computation model has two parts. The first part answers the question ‘How to scale a network of Erlang nodes?’. Currently, Distributed Erlang has a fully connected network of nodes with transitive connections. We propose to change that and add scalable groups (s groups). In s groups nodes have transitive connections with nodes of the same s group and non-transitive connections with other nodes. The idea of s groups is similar to Distributed Erlang hidden global groups. S groups differ from global groups in that nodes can belong to a multiple number of s groups or do not belong to an s group at all, and information about nodes is not global, i.e. in s groups nodes collect information about nodes of the same s group but they do not share this information with nodes of other s groups (Section 5.1). The second part of the SD Erlang design answers the question ‘How to manage a scaled number of Erlang nodes?’. As the number of Erlang nodes scale it is hard for a programmer to know the exact position of all nodes. Therefore we propose a semi-explicit placement. Currently, when a process is spawned the target node must be identified explicitly. In the semi-explicit placement the target node will be chosen by a decision making process using restrictions specified by the programmer, e.g. s groups, or types of s groups, or communicating distances on which the target node is located from the initial node (Section 5.2). Finally, we provide an overview of typical Erlang applications and summarise their requirements to the SD Erlang (Chapter 7). We also discuss Erlang VM implications and outline our future work (Chapter 8).

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

A Scalable Reliable Instant Messenger Using the SD Erlang A Scalable Reliable Instant Messenger Using the SD Erlang Libraries

Erlang has world leading reliability capabilities, but while it scales extremely well within a single node, distributed Erlang has some scalability issues. The Scalable Distributed (SD) Erlang libraries have been designed to address the scalability limitations while preserving the reliability model, and shown to deliver significant performance benefits above 40 hosts using some relatively simpl...

متن کامل

The Design of Scalable Distributed Erlang

The multicore revolution means that the number of cores in commodity machines is growing exponentially. Many expect 100,000 core clouds/platforms to become commonplace, and the best predictions are that core failures on such an architecture will become relatively common, perhaps one hour mean time between core failures. The RELEASE project aims to scale Erlang to build reliable general-purpose ...

متن کامل

RELEASE: A High-level Paradigm for Reliable Large-scale Server Software

Erlang is a functional language with a much-emulated model for building reliable distributed systems. This paper outlines the RELEASE project, and describes the progress in the first six months. The project aim is to scale the Erlang’s radical concurrency-oriented programming paradigm to build reliable general-purpose software, such as server-based systems, on massively parallel machines. Curre...

متن کامل

Improving the network scalability of Erlang

As the number of cores grows in commodity architectures so does the likelihood of failures. A distributed actor model potentially facilitates the development of reliable and scalable software on these architectures. Key components include lightweight processes which ‘share nothing’ and hence can fail independently. Erlang is not only increasingly widely used, but the underlying actor model has ...

متن کامل

RELEASE: A High-Level Paradigm for Reliable Large-Scale Server Software - (Project Paper)

Erlang provides a fault-tolerant, reliable model for building concurrent, distributed system based on functional programming. In the RELEASE project the Erlang model is extended to Scalable Distributed Erlang – SD Erlang – supporting general-purpose computation in massively multicore systems. This paper outlines the RELEASE proposal, and indicates the progress of the project in its first six mo...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2014